LDPC encoder and encoder and method thereof

ABSTRACT

A decoder for decoding low-density parity-check codes comprises a first calculator to calculate LLrR ml , for each parity check equation, at iteration i−1. A detector detects LLrR ml , at iteration i, in response to the first calculator. A second calculator calculates LLrQ Lm , for each parity check equation, at iteration i in response to the detector. LLrQ Lm  represents information from bit node l to equation node m, one for each connection. LLrR ml  represents information from equation node m to bit node l, one for each connection. The first calculator is responsive to the second calculator.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present invention is a continuation of Ser. No. 09/730,603, filed onDec. 7, 2000, which claims priority from Ser. No. 60/214,781, filed Jun.28, 2000 and is a continuation-in-part of Ser. No. 09/559,186, filed onApr. 27, 2000. The disclosures of the above applications areincorporated herein by reference in their entirety. The presentinvention is related to the following commonly-assigned, co-pendingapplications:

“LDPC Encoder and Method Thereof”, filed on Dec. 7, 2000 and assignedapplication Ser. No. 09/730,752, the contents of which are incorporatedherein by reference, in its entirety.

“Address Generator for LDPC Encoder and Decoder and Method Thereof”,U.S. Pat. No. 6,965,654, issued on Nov. 15, 2005, the contents of whichare incorporated herein by reference in its entirety.

“Parity Check Matrix and Method of Forming Thereof”, U.S. Pat. No.7,000,177, the contents of which are incorporated herein by reference inits entirety.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to a linear block decoder in adata transmission system. More particularly, the present inventionrelates to a low density parity-check code (LDPC) decoder a read channelin a disk drive system.

2. Description of the Related Art

FIG. 1 illustrates a conventional digital data transmission system. Asshown therein, a digital data transmission system comprises atransmitting section 300 for transmitting user data to receiver 500 viacommunication channel 401.

The operation of transmission section 300 will now be explained. Priorto processing by transmitting section 300, input or user data maybeencoded with an error correcting code, such as the Reed/Solomon code, orrun length limited encoded (RLL) or a combination thereof by encoder302. The encoded output encoder 302 is then interleaved by deinterleaver308 for input to linear block code encoder 304 which generates paritydata in a known manner utilizing linear block codes. One example of alinear block code is a low-density parity-check code (LDPC) which isdiscussed by Robert G. Gallager in Low-Density Parity-Check Codes, 1963,M.I.T. Press and by Zining Wu in Coding and Iterative Detection ForMagnetic Recording Channels, 2000, Kluwer Academic Publishers, thecontents of each of which are incorporated in their entirety byreference. Deinterleaver 308 permutes the data so that the same data isreordered before encoding by linear block code encoder 304. By permutingor redistributing the data, deinterleaver 308 attempts to reduce thenumber of nearest neighbors of small distance error events. User data atthe output of encoder 302 is referred to as being in the channel domain;that is the order in which data is transmitted through the channel. Theorder of data processed by deinterleaver 308 is referred to as being inthe linear block code domain. The parity data from linear block codeencoder 304 is combined with the data encoded by encoder 302 bymultiplexer 306 for input to channel transmitter 310.

Transmitter 310 transmits the combined user and parity data frommultiplexer 306 typically as an analog signal over communication channel401 in the channel domain. Communication channel 401 may include anywireless, wire, optical and the like communication medium. Receiver 500comprises a front-end circuit 502 comprising analog to digital andequalization circuits. The digital signal front-end circuit 502 is inputto soft channel decoder 504, which provides probability information ofthe detected data. Soft channel decoder 504 may be implemented by a SoftViterbi Detector or the like. The output of the soft channel decoder504, which is in the channel domain, is converted into the linear blockcode domain by deinterleaver 510. Deinterleaver 510 is constructedsimilarly to deinterleaver 308. Soft linear block code decoder 506utilizes this information and the parity bits to decode the receiveddata. One output of soft linear block code decoder 506 is fed back tosoft channel decoder 504 via interleaver 512, which converts data in thelinear block code domain to the channel domain. DeinterleaverInterleaver 512 is constructed to perform the reverse operations ofdeinterleaver 510. Soft channel decoder 504 and soft linear block codedecoder 506 operate in an iterative manner to decode the detected data.

The other output of soft linear block code decoder 506 is converted fromthe linear block domain to the channel domain by interleaver 514.Interleaver 514 is constructed similarly to interleaver 512. The outputof interleaver 514 is passed on for further processing to decoder 508.Decoder 508 is implemented to perform the reverse operations of encoder302.

SUMMARY OF THE INVENTION

A decoder for decoding low-density parity-check codes comprises a firstcalculator to calculate LLrR_(ml), for each parity check equation, atiteration i−1. A detector detects LLrR_(ml), at iteration i, in responseto the first calculator. A second calculator calculates LLrQ_(Lm), foreach parity check equation, at iteration i in response to the detector.LLrQ_(Lm) represents information from bit node l to equation node m, onefor each connection. LLrR_(ml) represents information from equation nodem to bit node l, one for each connection. The first calculator isresponsive to the second calculator. Other objects and attainmentstogether with a fuller understanding of the invention will becomeapparent and appreciated by referring to the following description andclaims taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings wherein like reference symbols refer to like parts.

FIG. 1 is a block diagram of a conventional data transmission system;

FIG. 2 is a block diagram of a data transmission system in accordancewith the present invention;

FIG. 3 is an example of a parity check matrix in accordance with thepresent invention;

FIG. 4 is a block diagram of a memory arrangement of the decoder inaccordance with the present invention;

FIG. 5 is a block diagram of the decoder in accordance with the presentinvention;

FIG. 6 is an example of a factor graph;

FIG. 7 is an example of a factor graph illustrating the calculation ofLLrQ_(Lm);

FIG. 8 is an example of a factor graph illustrating the calculation ofLLrR_(ml);

FIG. 9 is a graph of a function for calculating a soft decision;

FIG. 10 is a block diagram of a decision circuit of the decoder of FIG.5;

FIG. 11 is a block diagram of an alternate decision circuit of thedecoder of FIG. 5;

FIG. 12 is a factor graph of the decoding procedure in accordance withthe present invention;

FIG. 13 is a flow diagram of the decoding procedure in accordance withthe present invention;

FIG. 14 is a flow chart of the decision procedure of the decisioncircuit of FIG. 10;

FIG. 15 is a flow chart of the decision procedure of the alternatedecision circuit of FIG. 11;

FIG. 16 is a block diagram of a conventional decoding implementation;and

FIG. 17 is a block diagram of a decoding implementation in accordancewith the present invention.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

Reference is now made to FIG. 2, which is a block diagram of a datatransmission system in accordance with the present invention. In generalas shown therein, a digital data transmission system comprises atransmitting section 300′ for transmitting user data to receiver 500′via communication channel 401. The inventors have observed that a linearblock code encoder is not dependent on a position of a bit interleaved.Rather the linear block code encoder only requires a list of equationsfor a given bit. In other words, there is no need to process the data inthe order defined by the interleaver, instead data may be processed inthe same order as it is written to the channel. This can be accomplishedby incorporating an address generator to provide an address of theappropriate equation of the linear block code encoder. This principlecan be similarly applied to the soft linear block decoder. As a result,deinterleaver 308 of the conventional system is now replaced by addressgenerator 328, and deinterleaver 510 is now replaced by addressgenerator 530. Accordingly, there is no requirement for the physicalinterleaving of data in the receiver 500′, since the data remains in thesame order as the order of bits of data in the channel throughout thissystem. The order of bits of data transmitted through the channel isreferred to as the channel domain.

The operation of transmission section 300′ will now be explained. Priorto processing by transmitting section 300′, as in the conventionalsystem, input or user data maybe encoded with an error correcting code,such as the Reed/Solomon code, or run length limited encoded (RLL) or acombination thereof by encoder 302. Addresses for the parity equationsof linear block code encoder 304 are generated by address generator 328in accordance with an index of the bits of data, the index beingdetermined by address generator 328. Address generator 328 is responsiveto counter 730 under the control of controller 740. Controller 740synchronizes counter 730 to the output of encoder 302 so that counter730 can provide a count of the number of bits in a codeword output byencoder 302 and a count of the number of codewords. In the preferredembodiment the data block size is 5000 bits.

Referring again to FIG. 2, linear block code encoder 304 utilizes theuser data and address from address generator 328 to provide the paritybits to multiplexer 306. Address generator 328 is described in moredetail in commonly assigned, copending patent application entitled“Address Generator for LDPC Encoder and Decoder and Method Thereof”filed on even date and assigned application Ser. No. 09/730,597, thecontents of which are incorporated herein by reference. Linear blockcode encoder 304 is preferably implemented as a low-density parity-checkcode (LDPC) encoder as described in commonly assigned, copending patentapplication entitled “LDPC Encoder and Method Thereof”, filed on evendate and assigned application Ser. No. 09/730,752, the contents of whichare incorporated herein by reference. The parity data from linear blockcode encoder 304 is combined with the data encoded by encoder 302 bymultiplexer 306 for input to channel transmitter 310. In the preferredembodiment, the combined data consists of series of a pair parity bitsfollowed by 34 bits of user data. This constraint is established by RLLconstraint encoder 302.

Transmitter 310 transmits the combined user and parity data frommultiplexer 306 typically as an analog signal over communication channel401 in the channel domain. Communication channel 401 may include anywireless, wire, optical, magnetic and the like.

Receiver 500′ comprises an analog to front-end circuit 502 comprisinganalog to digital and equalization circuits. The digital signal fromfront-end circuit 502 is input to soft channel decoder 504, whichprovides soft or probabilistic information of the detected data to softlinear block decoder 506. Soft channel decoder may be implemented as aSoft Viterbi Detector or the like, and address generator 530 may beconstructed similarly as address generator 328 in transmission section300′. In the preferred the Soft Viterbi Detector may be implemented witha Soft-Output Viterbi Algorithm which is described in J. Hagenauer andP. Hoeher: “A Viterbi algorithm with soft-decision outputs and itsapplications”, Proc. IEEE GLOBECOM '90, Dallas, Tex., pp. 47.1.1-47.1.7,November 1989, the contents of which are incorporated by reference.

The soft information output by soft channel decoder 504 remains in thechannel domain and is decoded by soft linear block code decoder 506, inaccordance with the address of the parity equations generated by addressgenerator 530. Address generator 530 is responsive to counter 735 underthe control of controller 745. Controller 745 synchronizes counter 735to the output of soft channel decoder 504 so that counter 735 canprovide a count of the number of bits in a codeword output by softchannel decoder 504 and a count of the number of codewords.

Soft linear block code decoder 506 operates in combination with softchannel decoder 504 and address generator 530 in an iterative fashion.Soft linear block code decoder is preferably implemented as alow-density parity-check code (LDPC) decoder, as described in detailhereinbelow. It is noted that since the soft information from softchannel decoder 504 to soft linear block code decoder 506 are both inthe channel domain, thus as noted above, there is no need for anyinterleavers or deinterleavers in receiver 500′.

After the iterative process has completed, the output of soft linearblock code decoder 506 is passed on for further processing to decoder508. Decoder 508 is implemented to perform the reverse operations ofencoder 302 or correct for any data errors.

Prior to discussing the construction and operation of the LPDC decoder,reference is now made to FIG. 3 for an explanation of the parity checkmatrix. FIG. 3 shows only one example of a parity check matrix. Ofcourse, other parity check matrices are contemplated. The preferredmatrix is 222 rows (or equations) by 5402 columns, which comprises 220linearly independent rows (where 5402=73*74). The matrix can be dividedinto three tiers of equations having 73, 74 and 75 equations,respectively. The set of independent rows can be obtained by cancelingthe last row of the second tier and third tier, namely the 147^(th) rowand the 222^(nd) row. As shown in FIG. 3, the following table shows thevalues of the elements in the matrix:

Tier i^(th) position i^(th) position 1 1 if r = i(mod73) 0 if r ≠i(mod73) 2 1 if r = i(mod74) 0 if r ≠ i(mod74) 3 1 if r = i(mod75) 0 ifr ≠ i(mod75)

A matrix having 5402 columns can process a maximum LDPC codeword of 5402bits. Of course, as will be appreciated by one of ordinary skill in theart, the matrix may be truncated to accommodate a smaller block, howeverthe matrix must be at least 222×4366 which is dependent on theconstraint of encoder 302. This constraint is for example a RLLconstraint. The preferred matrix contains no cycles, since a matrixhaving cycles has degraded performance that degrades significantly. Withthe first tier only, the parity check matrix has a D_(min)=2; by addingthe second tier, the parity check matrix has a D_(min)=4; and by addingthe third tier, the parity check matrix has a D_(min)=6. A furtherdescription of the parity check matrix is provided in commonly assigned,copending application entitled, “Parity Check Matrix and Method ofDesigning Thereof”, filed on even date and assigned application Ser. No.09/730,598, the contents of which are incorporated herein by reference.

The LDPC decoder is preferably implemented using the sum-productalgorithm, which is described by Zining Wu in Coding and IterativeDetection For Magnetic Recording Channels, 2000, Kluwer AcademicPublishers, the contents of each of which are incorporated in itsentirety by reference.

A linear code is a set of codewords, x, satisfying the matrix equation(1)H·x=0  (1),

where H is an M×L matrix, and x is a L×1 vector.

The parity check matrix for an LDPC encoder/decoder is sparse, that is asmall portion of the elements being one, all other elements being zero.An example of a parity check matrix is shown in equation 2 thatcorresponds to the factor graph shown in FIG. 6.

$\begin{matrix}{H = \begin{bmatrix}1 & 0 & 1 & 1 \\0 & 1 & 1 & 1\end{bmatrix}} & (2)\end{matrix}$

which defines the following parity-check equations for the codeword xx1+x3+x4=0x2+x3+x4=0

FIG. 6 is a factor graph of the parity matrix of equation 2. The factorgraph contains two types of nodes the bit node (e.g. b1, b2, b3, and b4)and the check nodes (e.g. e1, e2). Each bit node corresponds to a bit inthe codeword, and each check node (also referred to herein as an“equation node”) represents a parity-check equation (i.e., a row in theparity check matrix H). Hence, the factor graph for an LDPC code with anM×L parity check matrix H contains M check nodes and L bit nodes. Anedge between a check node and a bit node exists if and only if the bitparticipates in the parity-check equation represented by the check node.The factor graph shown in FIG. 3 is “bipartite” in which the nodes canbe separated to two groups, namely check nodes and bit nodes.Connections are allowed only between nodes in different groups.

A cycle in a factor graph refers to a finite set of connected edges thatstart and end at the same node. The bold lines in FIG. 6 represent acycle length of four. As can be appreciated by one of ordinary skill inthe art, four is the shortest cycle length a parity check matrix canhave.

In the sum-product decoding algorithm, there are four types of softinformation circulating in the decoding process:

1. LLrP_(L): The soft information from channel APP (a posterioriprobability) decoder or soft channel decoder 504 for the first iterationor from decision aided equalization circuit 856 for subsequentiterations, one for each bit.

2. LLrQ_(Lm): The information from bit node l to equation node m, onefor each connection.

3. LLrR_(ml): The information from equation node m to bit node l, onefor each connection.

4. LLrAPP_(L): the overall soft information after each iteration, onefor each bit.

Each iteration performs three steps of operations (superscripts denoteiteration number):

1. Each bit calculates the information LLrQ that it passes to theconnecting equations, which is the sum of the extrinsic information LLrRfrom the previous iteration with the channel information LLrP from thecurrent iteration, excluding the extrinsic information from the sameequation, i.e.:

$\begin{matrix}{{LLrQ}_{Lm}^{i} = {{LLrP}_{L}^{i} + {\sum\limits_{m^{\prime} \neq m}{LLrR}_{m^{\prime}L}^{i - 1}}}} & (3)\end{matrix}$

2. Each check equation (each row) calculates the extrinsic informationfor each involved bit. The “LLRXOR” (Σ ⊕) denotes the LLR(log-likelihood ratio) operation discussed below.

$\begin{matrix}{{LLrR}_{mL}^{i} = {\sum\limits_{l^{\prime} \neq l}{\oplus {LLrQ}_{L^{\prime}m}^{i}}}} & (4)\end{matrix}$

3. Each bit calculates the overall soft information by summing up allthe LLrR_(mL)'s and the LLrP_(L)

$\begin{matrix}{{LLrAPP}_{L}^{i}:={{LLrP}_{L}^{i} + {\sum\limits_{m}{LLrR}_{mL}^{i}}}} & (5)\end{matrix}$

The “LLRXOR” operation is defined as:

$\begin{matrix}{{{LLRXOR}( {y,z} )} = {{{\log( {e^{y} + e^{z}} )} - {\log( {e^{y + z} + e^{0}} )}} = {{\max( {y,z} )} + {\log( {1 + {e\;}^{- {{y - z}}}} )} - {\max( {{x + y},0} )} - {\log( {1 + e^{- {{y + z}}}} )}}}} & (6)\end{matrix}$

where log(1+e^(−|a|)) can be implemented with a look-up table. Such anoperation requires 5 additions, 2 absolute values and two table look-upsfrom a look-up table. This procedure is referred to as the “Sum Product”(SP) algorithm.

The “LLRXOR” operation can be further simplified by eliminating thetable look-ups, i.e. omitting the log(1+e_(−|a|)) term in equation (6).The equation is simplified as follows:LLRXOR(y,z)=−sign(y)sign(z)min(|y|,|z|)  (7).

As is apparent to one of ordinary skill in the art, equation (7)requires only absolute value and comparison operations. This operationis referred to as the “Signed Sum Product” (SSP) algorithm.

In the SSP algorithm, the magnitudes of the extrinsic informationconveyed in each equation are determined by the two log-likelihoodratios with the smallest amplitudes. Other LLR's only contribute to thesign of the information, not to the amplitude. FIG. 7 shows theLLrQ_(Lm)'s passed from bits to an equation, and FIG. 8 shows theLLrR_(mL)'s relayed by the equation.

A conventional implementation of SP or SSP requires L units of memory tostore the LLrP_(L):'s; L units of memory to store the LLrAPP_(L)'s; MLunits of memory to store the LLrQ_(Lm)'s; and ML units of memory tostore the LLrR_(mL)'s. Soft information is updated bit by bit withineach iteration. These implementations are referred to as the “bit-based”implementations. As will be appreciated by one of ordinary skill in theart, the bit-based implementations require a large amount of memory andincreased hardware complexity. FIG. 12 illustrates an implementation ofSSP, which is generally performed in a serial manner. As shown therein,soft channel decoding is performed for the first iteration. ThereafterLLrQ_(Lm) and LLrR_(ml) are sequentially calculated. For subsequentiterations i, decision aided equalization is then performed on theinformation. After the decision aided equalization iteration LLrQ_(Lm)is calculated in accordance with equation (3), and then LLrR_(ml). iscalculated in accordance with equation (4). The conventional processrequires, for a 4000 bit codeword, approximately 4000 cycles for softchannel decoding, approximately 4000 cycles for calculating LLrQ_(Lm),approximately 4000 cycles for calculating LLrR_(ml), and approximately4000 cycles for performing decision aided equalization. The amount oftime required by conventional methods degrades performance.

In accordance with the present invention, a pipelined architecture isproposed for the SSP circuit, as shown in FIG. 17. In accordance withthe present invention, soft channel decoding is performed to initializethe SSP circuit, and for iteration i, LLrQ_(Lm) ^(I) is calculated. Atthe same time LLrR_(ml) ^(I−1) for iteration i−1 is also calculated.Based on this result and LLrAPP_(L) decision aided equalization is thenperformed. As can be appreciated by one of ordinary skill in the art,the pipelined architecture allows for reduced pendency, resulting inhigher throughput In accordance with the present invention, eachiteration takes about 4000 cycles for a 4000 bit codeword. According toanother aspect of the present invention, an “equation-based” arrangementis proposed which implements the same algorithm with much less hardwarecomplexity as described herein below.

The “equation-based” arrangement takes advantage of both the sparsenessof the parity-check matrix and the simplicity in the SSP decoding. It isnoted that the number of equations for each bit involved corresponds tothe column weight of the parity check matrix, which in the preferredembodiment is three. Of course other appropriate column weights may beemployed. According to equation (7), each equation node only passes twovalues to the connected bit nodes if signs of the soft information arenot considered. Therefore, there is only a need to store two LLRmagnitudes for each equation, and the signs for all the LLrQ_(Lm)'s. foreach equation, the two smallest LLR's (min1 and min2), the position ofmin1 (i), and the sign of the equation (s); for each bit are stored.Additionally, three signs are stored corresponding to the signs of threeLLrQ_(Lm)'s from the previously iteration. LLrR_(Lm)'s can be calculatedfrom the stored information as follows:

${llrR}_{m\; l}^{i - 1} = \{ \begin{matrix}{{{{- s_{m}^{i - 1}} \cdot {{sign}( {llrQ}_{l\; m}^{i - 1} )} \cdot \min}\; 1_{m}^{i - 1}},} & {{{if}\mspace{14mu} l} \neq l_{m}^{i - 1}} \\{{{{- s_{m}^{i - 1}} \cdot {{sign}( {llrQ}_{l\; m}^{i - 1} )} \cdot \min}\; 2_{m}^{i - 1}},} & {{otherwise}.}\end{matrix} $

where

$s_{m}^{i} = {( {- 1} ){\prod\limits_{I}{- {{sign}( {LLrQ}_{Lm}^{i} )}}}}$is the sign of the mth equation

Referring to block diagram in FIG. 5, the corresponding flow chart inFIG. 13, and the corresponding factor graph in FIG. 12, the“equation-based” SSP circuit performs the following process:

1. The equation-based SSP circuit is initialized with the output of softchannel decoder 504 for the calculation of LLrP_(L), which is selectedby multiplexer 854. During subsequent iterations, multiplexer 854selects the output of decision aided equalization circuit 856, asdiscussed hereinbelow

2. At each time clock, address generator 530 calculates the indices ofeach equation for the current bit, and position index generator 802calculates the position index thereof. Three LLrR_(ml)'s are calculatedusing Equation 8 by a calculating means or calculator or equation 1 LLRupdate circuit 816, equation 2 LLR update circuit 818, and equation 3LLR update circuit 820.

3. Each bit calculates the information that it passes to the connectingequations by calculating means or calculator as follows,

$\begin{matrix}{{llrQ}_{l\; m}^{i} = {{llrP}_{l}^{i} + {\sum\limits_{m^{\prime} \neq m}{llrR}_{m^{\prime}l}^{i - 1}}}} & (9)\end{matrix}$

The LLrR_(ml)'s are multiplied by a scaling factor by multipliers 836,838 and 840 respectively to reduce circulation of any errors. TheLLrR_(mI)'s are also delayed by delay circuits 832, 834, and 842,respectively, to synchronize with LLrP_(L).

Each bit stores the three signs of the LLrQ's in memory means or memorysections 708, 712 and 726 for equations 1, 2 and 3 respectively.

Each bit updates the equation information (min1, min2, i, and s) for thethree equations involving the current bit by equation 1 update circuit808, equation 2 update circuit 810, and equation 3 update circuit 830,respectively, in accordance with the following procedure:

If |llrQ^(f) _(lm)| < min1_(ml) min1^(f) _(m) → min2^(f) _(m) |llrQ^(f)_(lm)→ < min1_(m) l → l^(f) _(m) else if |llrQ^(f) _(lm)| < min2_(ml)|llrQ^(f) _(lm)→ < min1_(m) s^(f) _(m) = s^(f) _(m) · sign(llrQ^(f)_(lm)) endif

Each bit calculates the overall soft information by summing up all theLLrR_(mI)'s, and LLrP_(L) (via delay circuit 848) as an input todecision aided equalizer 856.

${llrAPP}_{i} = {{\sum\limits_{m}{llrR}_{m\; l}^{i}} + {{llrP}_{l}.}}$

Log-likelihood ratios are converted to probability information byconverter 850. Converter 850 implements the function shown in FIG. 9. Inthe preferred embodiment, the function is implemented as a piecewiselinear approximation, shown as the dashed lines in FIG. 9. Decisionaided equalizer 856 processes LLrAPP_(L) and samples stored in samplesmemory 864 from an equalizer (not shown) in front end 502. Decisionaided equalization is described in more detail by Zining Wu in Codingand Iterative Detection For Magnetic Recording Channels, 2000, KluwerAcademic Publishers, the contents of which are incorporated in itsentirety by reference.

Decision circuit 900, which is responsive to the output of summer 852,address generator 530 and soft channel decoder 504 determines when toterminate this iterative process, as is described in detail below.

FIG. 4 is a block diagram of a memory arrangement of the decoder inaccordance with the present invention. As shown therein, memory ormemory means 750 has a partition for each equation, and each equationhas a partition for storing magnitude data, index data and sign data foriteration i and for iteration i−1. As used herein, the term partitionrefers either to a physical memory partition or a logical memorypartition. Equation 1 update circuit 808, for each clock cycle, writesduring iteration i to memory partition 806 a or memory partition 806 bi, and reads data previously stored from iteration i−1 from memorypartition 806 b or memory partition 806 a. Multiplexer 902 selects thememory partition for write operations and multiplexer 904 selects thememory partition for read operations. Equation 1 LLR update circuit 816reads data previously stored from iteration i−1 from memory partition806 b or memory partition 806 a as selected by multiplexer 914. Equation2 update circuit 810, equation 3 update circuit 830, equation 2 LLRupdate circuit 818, and equation 3 LLR update circuit 820 operatesimilarly.

FIG. 10 is a block diagram of decision circuit 900, and FIG. 14 is aflow chart thereof. Decision circuit 900 is responsive to the outputfrom soft channel decoder 504, LLrAPP_(L) from summer or summing means852 and address generator or address generator means 530. Decisioncircuit 900 comprises memory 914 for storing hard decision data b_(s,l)(for l=1:5402) from soft channel decoder 504, slicer or slicing means888 for converting |LLrAPP_(L)| information into hard informationb_(c,l) memory 904 for storing b_(c,l), a threshold detector 902 todetermine if |LLrAPP_(L)| from summer 852 is less then a threshold value(t₂). Decision circuit or decision means 900 further comprises counter920 for counting the number of iterations performed by the decoder andthreshold detector 910 to determine if the number of iterations exceedsthreshold value t₃, which in the preferred embodiment is four. Equationvector circuit or equation vector means 908 determines the equationsyndromes, one for each equation, S_(m), m=1:222 in which S_(m)=0 whenequation i is satisfied or S_(m)=1 when equation m is violated. Summer906 sums each of the S_(m), m=1:222.

The operation of decision circuit 900 will now be explained inconjunction with the flow chart of FIG. 14. After an iteration ofiterative decoding, the equation syndrome is calculated by equationvector circuit 908 and summed by summer or summing means 906. Thresholdcircuit 912 determines if the sum of all S_(m)=0, then a signal is sentto multiplexer 854 to output b_(c,l) from memory 904. If the sum of allS_(m)≠0, then a determination is made by threshold detector 910 whetherthe number of iterations is less than threshold value t₃. If the numberof iterations is less than threshold value t₃, the next iteration isperformed. Otherwise threshold circuit 912 determines if the sum of allS_(m) is less than threshold t₁. If so, then a signal is sent tomultiplexer 854 to output b_(c,l) from memory 904. Alternatively, thenext step in the process is to determine if |LLrAPP_(L)| is less thenthreshold value (t₂), if so, multiplexer 854 selects b_(s,l) to beoutput. If |LLrAPP_(L)| is not less then threshold value (t₂),multiplexer 854 selects b_(c,l) to be output.

FIG. 11 is a block diagram of decision circuit 900′ and FIG. 15 is aflow chart thereof. Decision circuit 900′ is responsive to the outputfrom soft channel decoder 504, LLrAPP_(L) from summer 852 and addressgenerator 530. Decision circuit 900′ comprises memory 914 for storinghard decision data b_(s,l) (for I=1:5402) from soft channel decoder 504,slicer 888 for converting |LLrAPP_(L)| information into hard informationb_(c,l), memory 904 for storing b_(c,l), a threshold detector 902 todetermine if |LLrAPP_(L)| from summer 852 is less then a threshold value(t₂). Decision circuit 900′ further comprises counter 920 for countingthe number of iterations performed by the decoder and threshold detector910 to determine if the number of iterations exceeds threshold value t₃,which in the preferred embodiment is four. Equation vector circuit 908determines the equation syndromes, one for each equation, S_(m), i=1:222in which S_(m)=0 when equation i is satisfied or S_(m)=1 when equation iis violated. Summer 906 sums each of the S_(m), m=1:222.

The operation of decision circuit 900′ will now be explained inconjunction with the flow chart of FIG. 15. After an iteration ofiterative decoding, the equation syndrome is calculated and summed byequation vector circuit 908 and summer 906. Threshold circuit 912determines if the sum of all S_(m)=0, then a signal is sent tomultiplexer 854 to output b_(c,l) from memory 904. If the sum of allS_(m)≠0, then a determination is made by threshold detector 910 whetherthe number of iterations is less than threshold value t₃. If the numberof iterations is less than threshold value t₃, the next iteration isperformed. Otherwise threshold circuit 912 determines if the sum of allS_(m) is less than threshold t₁. If so, then a signal is sent tomultiplexer 854 to output b_(c,l) from memory 904. Alternatively, thenext step in the process is to determine if b_(l) is involved in anequation that is violated. If b_(l) is not involved in an equation thatis violated, multiplexer 854 selects b_(c,l) as the output. Otherwisethreshold detector 902 determines if |LLrAPP_(l)| is less then thresholdvalue (t₂), if so multiplexer 854 selects b_(s,l) to be output. If|LLrAPP_(l)| is not less then threshold value (t₂), multiplexer 854selects b_(c,l) to be output.

While the invention has been described in conjunction with severalspecific embodiments, it is evident to those skilled in the art thatmany further alternatives, modifications and variations will be apparentin light of the foregoing description. More specifically, while thepresent invention is preferably implemented as an integrated circuit, itis contemplated that the present invention may also be implemented asdiscrete components or a general-purpose processor operated inaccordance with program code instructions or computer program orcombination thereof. These program code instructions can be obtain froma medium, such as network, local area network, the Internet, or storagedevices. Such storage devices include, by way of example, magneticstorage devices, optical storage devices, electronic storage devices,magneto-optical device and the like. Thus, the invention describedherein is intended to embrace all such alternatives, modifications,applications and variations as may fall within the spirit and scope ofthe appended claims.

1. A decoder for decoding low-density parity-check codes comprising: afirst calculator to calculate LLrR_(ml), for each parity check equation,at iteration i−1; a detector to detect LLrP_(L), at iteration i, inresponse to the first calculator; and a second calculator to calculateLLrQ_(Lm), for each parity check equation, at iteration i in response tothe detector, wherein LLrP_(L) comprises soft information at iteration iin response to the detector, one for each bit, wherein LLrQ_(Lm)represents information from bit node l to equation node m, one for eachconnection, wherein LLrR_(ml), represents information from equation nodem to bit node l, one for each connection, and wherein the firstcalculator is responsive to the second calculator.
 2. The decoder ofclaim 1 further comprising: a memory to store for each parity checkequation: the smallest LLrQ_(Lm) calculated by the second calculator, atiteration i; the second smallest LLrQ_(Lm) calculated by the secondcalculator, at iteration i; and an overall sign of LLrQ_(Lm), calculatedby the second calculator, at iteration i, wherein the first calculatoris responsive to the memory, and wherein the second calculator isresponsive to the first calculator.
 3. The decoder of claim 2 whereinthe first calculator calculates as follows, wherein s^(i) _(m) comprisesa sign of the mth equation:${llrR}_{m\; l}^{i - 1} = \{ \begin{matrix}{{{{- s_{m}^{i - 1}} \cdot {{sign}( {llrQ}_{l\; m}^{i - 1} )} \cdot \min}\; 1_{m}^{i - 1}},} & {{{if}\mspace{14mu} l} \neq l_{m}^{i - 1}} \\{{{{- s_{m}^{i - 1}} \cdot {{sign}( {llrQ}_{l\; m}^{i - 1} )} \cdot \min}\; 2_{m}^{i - 1}},} & {{otherwise}.}\end{matrix} $
 4. The decoder of claim 2 wherein the secondcalculator calculates as follows:${llrQ}_{l\; m}^{i} = {{llrP}_{l}^{i} + {\sum\limits_{m^{\prime} \neq m}{llrR}_{m^{\prime}l}^{i - 1}}}$wherein LLrP_(L) comprises soft information at iteration i in responseto the detector, one for each bit.
 5. The decoder of claim 2 wherein thesecond calculator is initialized with soft channel information.
 6. Thedecoder of claim 2 further comprising an address generator for providingindices of each of the parity check equations.
 7. The decoder of claim 2wherein the second calculator provides an index of the smallestLLrQ_(Lm).
 8. The decoder of claim 2 further comprising a multiplier toscale LLrR_(ml), calculated by the first calculator.
 9. The decoder ofclaim 2 further comprising a slicer to convert |LLrAPP_(l)| informationinto hard information b_(c,l), wherein LLrAPP_(l) comprises overall softinformation after each iteration i, one for each bit; an equation vectorcircuit to calculate an equation syndrome for each parity checkequation, s_(i).
 10. The decoder of claim 9 further comprising: a summerto sum each equation syndrome calculated by the equation vector circuit;wherein the hard information is output if the sum summed by the summer iis equal to zero; and wherein the calculations by the first and secondcalculator are repeated if the sum summed by the summer is not equal tozero.
 11. The decoder of claim 10 further comprising: a first thresholddetector to determine if i is less than a first predetermined value;wherein the calculations by the first and second calculator are repeatedif i is less than the first predetermined value as determined by thefirst threshold detector; and a second threshold detector to determineif the sum by the summer is less than a second predetermined value; andwherein the hard information is output if i is at least the firstpredetermined value or the sum by the summing means is less than thesecond predetermined value.
 12. The decoder of claim 11 furthercomprising: a third threshold detector to determine for each data l if|LLrAPP_(l)| is less than a third predetermined value; wherein for eachdata l, outputting hard information b_(c,l) if |LLrAPP_(l)| is at leastthe third predetermined value as determined by the third thresholddetector; and wherein for each data l, outputting soft channelinformation b_(s,l) if |LLrAPP_(l)| is less than the third predeterminedvalue as determined by the third threshold detector.
 13. The decoder ofclaim 11 further comprising: a judging circuit to determine for eachdata l if a corresponding parity check equation is violated; wherein foreach data l, outputting hard information b_(c,l), if the correspondingparity check equation is not violated as determined by the judgingcircuit; a third threshold detector to determine for each data l if|LLrAPP_(l)| is less than a third predetermined value; wherein for eachdata l, outputting hard information b_(c,l) if |LLrAPP_(l)| is at leastthe third predetermined value as determined by the third thresholddetector; and wherein for each data l, outputting soft channelinformation b_(s,l) based on information from a soft channel decoder if|LLrAPP_(l)| is less than the third predetermined value as determined bythe third threshold detector.
 14. A decoder for decoding low-densityparity-check codes comprising: first calculating means for calculatingLLrR_(ml), for each parity check equation, at iteration i−1; detectingmeans for detecting LLrP_(L), at iteration i, in response to the firstcalculating means; and second calculating means for calculatingLLrQ_(Lm), for each parity check equation, at iteration i in response tothe detecting means, wherein LLrP_(L) comprises soft information atiteration i in response to the detecting means, one for each bit,wherein LLrQ_(Lm) represents information from bit node l to equationnode m, one for each connection, wherein LLrR_(ml) representsinformation from equation node m to bit node l, one for each connection,and wherein the first calculating means is responsive to the secondcalculating means.
 15. The decoder of claim 14 further comprising:storing means for storing each parity check equation: the smallestLLrQ_(Lm) calculated by the second calculating means, at iteration i;the second smallest LLrQ_(Lm) calculated by the second calculatingmeans, at iteration i; and an overall sign of LLrQ_(Lm), calculated bythe second calculating means, at iteration i, wherein the firstcalculating means is responsive to the storing means, and wherein thesecond calculating means is responsive to the first calculating means.16. The decoder of claim 15 wherein the first calculating meanscalculates as follows, wherein s^(i) _(m) comprises a sign of the mthequation: ${llrR}_{m\; l}^{i - 1} = \{ \begin{matrix}{{{{- s_{m}^{i - 1}} \cdot {{sign}( {llrQ}_{l\; m}^{i - 1} )} \cdot \min}\; 1_{m}^{i - 1}},} & {{{if}\mspace{14mu} l} \neq l_{m}^{i - 1}} \\{{{{- s_{m}^{i - 1}} \cdot {{sign}( {llrQ}_{l\; m}^{i - 1} )} \cdot \min}\; 2_{m}^{i - 1}},} & {{otherwise}.}\end{matrix} $
 17. The decoder of claim 15 wherein the secondcalculating means calculates as follows:${llrQ}_{l\; m}^{i} = {{llrP}_{l}^{i} + {\sum\limits_{m^{\prime} \neq m}{llrR}_{m^{\prime}l}^{i - 1}}}$wherein LLrP_(L) comprises soft information at iteration i in responseto the detecting means, one for each bit.
 18. The decoder of claim 15wherein the second calculating means is initialized with soft channelinformation.
 19. The decoder of claim 15 further comprising addressgenerating means for providing indices of each of the parity checkequations.
 20. The decoder of claim 15 wherein the second calculatingmeans provides an index of the smallest LLrQ_(Lm).
 21. The decoder ofclaim 15 further comprising multiplying means for scaling LLrR_(ml),calculated by the first calculating means.
 22. The decoder of claim 15further comprising slicing means for converting |LLrAPP_(l)| informationinto hard information b_(c,l), wherein LLrAPP_(l) comprises overall softinformation after each iteration i, one for each bit; and equationvector means for calculating an equation syndrome for each parity checkequation, s_(i).
 23. The decoder of claim 22 further comprising: summingmeans for summing each equation syndrome calculated by the equationvector means; wherein the hard information is output if the sum summedby the summing means is equal to zero; and wherein the calculations bythe first and second calculating means are repeated if the sum summed bythe summing means is not equal to zero.
 24. The decoder of claim 23further comprising: first threshold detecting means for determining if iis less than a first predetermined value; wherein the calculations bythe first and second calculating means are repeated if i is less thanthe first predetermined value as determined by the first thresholddetecting means; and second threshold detecting means for determining ifthe sum by the summing means is less than a second predetermined value;and wherein the hard information is output if i is at least the firstpredetermined value or the sum by the summing means is less than thesecond predetermined value.
 25. The decoder of claim 24 furthercomprising: third threshold detecting means for determining for eachdata l if |LLrAPP_(l)| is less than a third predetermined value; whereinfor each data l, outputting hard information b_(c,l) if |LLrAPP_(l)| isat least the third predetermined value as determined by the thirdthreshold detecting means; and wherein for each data l, outputting softchannel information b_(s,l) if |LLrAPP_(l)| is less than the thirdpredetermined value as determined by the third threshold detectingmeans.
 26. The decoder of claim 24 further comprising: judging means fordetermining for each data l if a corresponding parity check equation isviolated; wherein for each data l, outputting hard information b_(c,l),if the corresponding parity check equation is not violated as determinedby the judging means; third threshold detecting means for determiningfor each data l if |LLrAPP_(l)| is less than a third predeterminedvalue; wherein for each data l, outputting hard information b_(c,l) if|LLrAPP_(l)| is at least the third predetermined value as determined bythe third threshold detecting means; and wherein for each data l,outputting soft channel information b_(s,l) based on information from asoft channel decoder if |LLrAPP_(l)| is less than the thirdpredetermined value as determined by the third threshold detectingmeans.
 27. A method for operating a decoder for decoding low-densityparity-check codes comprising: calculating LLrR_(ml), for each paritycheck equation, at iteration i−1; detecting LLrP_(L), at iteration i;and calculating LLrQ_(Lm), for each parity check equation, at iterationi in response to the detecting, wherein LLrP_(L) comprises softinformation at iteration i in response to the detecting means, one foreach bit, wherein LLrQ_(Lm) represents information from bit node l toequation node m, one for each connection, wherein LLrR_(ml), representsinformation from equation node m to bit node l, one for each connection.28. The method of claim 27 further comprising: storing each parity checkequation: the smallest LLrQ_(Lm) calculated at iteration i; the secondsmallest LLrQ_(Lm) calculated at iteration i; and an overall sign ofLLrQ_(Lm), calculated at iteration i.
 29. The method of claim 28 whereincalculating LLrQ_(Lm) is calculated as follows, where s^(i) _(m)comprises a sign of the mth equation:${llrR}_{m\; l}^{i - 1} = \{ \begin{matrix}{{{{- s_{m}^{i - 1}} \cdot {{sign}( {llrQ}_{l\; m}^{i - 1} )} \cdot \min}\; 1_{m}^{i - 1}},} & {{{if}\mspace{14mu} l} \neq l_{m}^{i - 1}} \\{{{{- s_{m}^{i - 1}} \cdot {{sign}( {llrQ}_{l\; m}^{i - 1} )} \cdot \min}\; 2_{m}^{i - 1}},} & {{otherwise}.}\end{matrix} $
 30. The method of claim 28 wherein calculatingLLrR_(ml) is performed as follows:${llrQ}_{l\; m}^{i} = {{llrP}_{l}^{i} + {\sum\limits_{m^{\prime} \neq m}{llrR}_{m^{\prime}l}^{i - 1}}}$wherein LLrP_(L) comprises soft information at iteration i in responseto the detecting, one for each bit.
 31. The method of claim 28 whereincalculating LLrR_(ml), is initialized with soft channel information. 32.The method of claim 28 further comprising providing indices of each ofthe parity check equations.
 33. The method of claim 28 furthercomprising providing an index of the smallest LLrQ_(Lm).
 34. The methodof claim 28 further comprising scaling LLrR_(ml).
 35. The method ofclaim 28 further comprising converting |LLrAPP_(l)| information intohard information b_(c,l), wherein LLrAPP_(l) comprises overall softinformation after each iteration i, one for each bit; calculating anequation syndrome for each parity check equation, s_(i).
 36. The methodof claim 35 further comprising: summing each equation syndrome; whereinthe hard information is output if the sum i is equal to zero; andwherein calculating LLrQ_(Lm) and LLrR_(ml) is repeated if the sum isnot equal to zero.
 37. The method of claim 36 further comprising:determining if i is less than a first predetermined value; whereincalculating LLrQ_(Lm) and LLrR_(ml) is repeated if i is less than thefirst predetermined value; and determining if the sum is less than asecond predetermined value; and wherein the hard information is outputif i is at least the first predetermined value or the sum is less thanthe second predetermined value.
 38. The method of claim 37 furthercomprising: determining for each data l if |LLrAPP_(l)| is less than athird predetermined value; outputting hard information b_(c,l) for eachdata l if |LLrAPP_(l)| is at least the third predetermined value; andoutputting soft channel information b_(s,l) for each data l if|LLrAPP_(l)| is less than the third predetermined value.
 39. The methodof claim 37 further comprising: determining for each data l if acorresponding parity check equation is violated; outputting hardinformation b_(c,l) for each data/if the corresponding parity checkequation is not violated; determining for each data l if |LLrAPP_(l)| isless than a third predetermined value; outputting hard informationb_(c,l) for each data l if |LLrAPP_(l)| is at least the thirdpredetermined value; and outputting soft channel information b_(s,l) foreach data/based on information from a soft channel decoder if|LLrAPP_(l)| is less than the third predetermined value.